// const memo = []

// const fib = (i) => {
//   if (i <= 2) {
//     return 1
//   }
//   if (memo[i]) {
//     return memo[i]
//   } else {
//     const res = fib(i - 1) + fib(i - 2)
//     memo[i] = res
//     return res
//   }
// }

// 简化写法, 直接将储存的数组放到函数参数中
const fib = (i, memo) => {
  // 第一第二位返回1
  if (i <= 2) return 1
  // 有旧数据取旧数据, 没有就计算
  memo[i] = memo[i] || fib(i - 1, memo) + fib(i - 2, memo)
  // 返回结果
  return memo[i]
}

console.time('fib')

console.log(fib(1500, []))

console.timeEnd('fib')

// [1,1,2,3,5,8,13,21]
